#ifndef __CUDA_DRIVER_WRAPPER_TYPEDEF_H__
#define __CUDA_DRIVER_WRAPPER_TYPEDEF_H__

typedef mcDrvError_t (*PFN_wcuGetErrorString_v6000)(mcDrvError_t error, const char **pStr);
typedef mcDrvError_t (*PFN_wcuGetErrorName_v6000)(mcDrvError_t error, const char **pStr);
typedef mcDrvError_t (*PFN_wcuInit_v2000)(unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuDriverGetVersion_v2020)(int *driverVersion);
typedef mcDrvError_t (*PFN_wcuDeviceGet_v2000)(mcDrvDevice_t *device, int ordinal);
typedef mcDrvError_t (*PFN_wcuDeviceGetCount_v2000)(int *count);
typedef mcDrvError_t (*PFN_wcuDeviceGetName_v2000)(char *name, int len, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetUuid_v9020)(mcDrvUuid_t *uuid, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetUuid_v11040)(mcDrvUuid_t *uuid, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetLuid_v10000)(char *luid, unsigned int *deviceNodeMask, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceTotalMem_v3020)(size_t *bytes, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetTexture1DLinearMaxWidth_v11010)(size_t *maxWidthInElements, mcArray_Format format, unsigned numChannels, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetAttribute_v2000)(int *pi, mcDrvDeviceAttribute_t attrib, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetNvSciSyncAttributes_v10020)(void *nvSciSyncAttrList, mcDrvDevice_t dev, int flags);
typedef mcDrvError_t (*PFN_wcuDeviceSetMemPool_v11020)(mcDrvDevice_t dev, mcDrvMemPool_t pool);
typedef mcDrvError_t (*PFN_wcuDeviceGetMemPool_v11020)(mcDrvMemPool_t *pool, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetDefaultMemPool_v11020)(mcDrvMemPool_t *pool_out, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetProperties_v2000)(mcDrvDevprop *prop, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceComputeCapability_v2000)(int *major, int *minor, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxRetain_v7000)(mcDrvContext_t *pctx, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxRelease_v11000)(mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxSetFlags_v11000)(mcDrvDevice_t dev, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxGetState_v7000)(mcDrvDevice_t dev, unsigned int *flags, int *active);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxReset_v11000)(mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDeviceGetExecAffinitySupport_v11040)(int *pi, mcDrvexecAffinityType type, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuCtxCreate_v3020)(mcDrvContext_t *pctx, unsigned int flags, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuCtxCreate_v11040)(mcDrvContext_t *pctx, mcDrvexecAffinityParam_t *paramsArray, int numParams, unsigned int flags, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuCtxDestroy_v4000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuCtxPushCurrent_v4000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuCtxPopCurrent_v4000)(mcDrvContext_t *pctx);
typedef mcDrvError_t (*PFN_wcuCtxSetCurrent_v4000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuCtxGetCurrent_v4000)(mcDrvContext_t *pctx);
typedef mcDrvError_t (*PFN_wcuCtxGetDevice_v2000)(mcDrvDevice_t *device);
typedef mcDrvError_t (*PFN_wcuCtxGetFlags_v7000)(unsigned int *flags);
typedef mcDrvError_t (*PFN_wcuCtxSynchronize_v2000)(void);
typedef mcDrvError_t (*PFN_wcuCtxSetLimit_v3010)(mcDrvlimit_t limit, size_t value);
typedef mcDrvError_t (*PFN_wcuCtxGetLimit_v3010)(size_t *pvalue, mcDrvlimit_t limit);
typedef mcDrvError_t (*PFN_wcuCtxGetCacheConfig_v3020)(mcDrvfunc_cache_t *pconfig);
typedef mcDrvError_t (*PFN_wcuCtxSetCacheConfig_v3020)(mcDrvfunc_cache_t config);
typedef mcDrvError_t (*PFN_wcuCtxGetSharedMemConfig_v4020)(mcDrvsharedconfig_t *pConfig);
typedef mcDrvError_t (*PFN_wcuCtxSetSharedMemConfig_v4020)(mcDrvsharedconfig_t config);
typedef mcDrvError_t (*PFN_wcuCtxGetApiVersion_v3020)(mcDrvContext_t ctx, unsigned int *version);
typedef mcDrvError_t (*PFN_wcuCtxGetStreamPriorityRange_v5050)(int *leastPriority, int *greatestPriority);
typedef mcDrvError_t (*PFN_wcuCtxResetPersistingL2Cache_v11000)(void);
typedef mcDrvError_t (*PFN_wcuCtxAttach_v2000)(mcDrvContext_t *pctx, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuCtxDetach_v2000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuCtxGetExecAffinity_v11040)(mcDrvexecAffinityParam_t *pExecAffinity, mcDrvexecAffinityType type);
typedef mcDrvError_t (*PFN_wcuModuleLoad_v2000)(mcDrvModule_t *module, const char *fname);
typedef mcDrvError_t (*PFN_wcuModuleLoadData_v2000)(mcDrvModule_t *module, const void *image);
typedef mcDrvError_t (*PFN_wcuModuleLoadDataEx_v2010)(mcDrvModule_t *module, const void *image, unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues);
typedef mcDrvError_t (*PFN_wcuModuleLoadFatBinary_v2000)(mcDrvModule_t *module, const void *fatCubin);
typedef mcDrvError_t (*PFN_wcuModuleUnload_v2000)(mcDrvModule_t hmod);
typedef mcDrvError_t (*PFN_wcuModuleGetFunction_v2000)(mcDrvFunction_t *hfunc, mcDrvModule_t hmod, const char *name);
typedef mcDrvError_t (*PFN_wcuModuleGetGlobal_v3020)(mcDrvDeviceptr_t *dptr, size_t *bytes, mcDrvModule_t hmod, const char *name);
typedef mcDrvError_t (*PFN_wcuModuleGetTexRef_v2000)(mcDrvTexref *pTexRef, mcDrvModule_t hmod, const char *name);
typedef mcDrvError_t (*PFN_wcuModuleGetSurfRef_v3000)(mcDrvSurfref *pSurfRef, mcDrvModule_t hmod, const char *name);
typedef mcDrvError_t (*PFN_wcuLinkCreate_v6050)(unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues, mcDrvlinkState_t *stateOut);
typedef mcDrvError_t (*PFN_wcuLinkAddData_v6050)(mcDrvlinkState_t state, mcDrvJitInputType_t type, void *data, size_t size, const char *name, unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues);
typedef mcDrvError_t (*PFN_wcuLinkAddFile_v6050)(mcDrvlinkState_t state, mcDrvJitInputType_t type, const char *path, unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues);
typedef mcDrvError_t (*PFN_wcuLinkComplete_v5050)(mcDrvlinkState_t state, void **binOut, size_t *sizeOut);
typedef mcDrvError_t (*PFN_wcuLinkDestroy_v5050)(mcDrvlinkState_t state);
typedef mcDrvError_t (*PFN_wcuMemGetInfo_v3020)(size_t *free, size_t *total);
typedef mcDrvError_t (*PFN_wcuMemAlloc_v3020)(mcDrvDeviceptr_t *dptr, size_t bytesize);
typedef mcDrvError_t (*PFN_wcuMemAllocPitch_v3020)(mcDrvDeviceptr_t *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes);
typedef mcDrvError_t (*PFN_wcuMemFree_v3020)(mcDrvDeviceptr_t dptr);
typedef mcDrvError_t (*PFN_wcuMemGetAddressRange_v3020)(mcDrvDeviceptr_t *pbase, size_t *psize, mcDrvDeviceptr_t dptr);
typedef mcDrvError_t (*PFN_wcuMemAllocHost_v3020)(void **pp, size_t bytesize);
typedef mcDrvError_t (*PFN_wcuMemFreeHost_v2000)(void *p);
typedef mcDrvError_t (*PFN_wcuMemHostAlloc_v2020)(void **pp, size_t bytesize, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuMemHostGetDevicePointer_v3020)(mcDrvDeviceptr_t *pdptr, void *p, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuMemHostGetFlags_v2030)(unsigned int *pFlags, void *p);
typedef mcDrvError_t (*PFN_wcuMemAllocManaged_v6000)(mcDrvDeviceptr_t *dptr, size_t bytesize, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuDeviceGetByPCIBusId_v4010)(mcDrvDevice_t *dev, const char *pciBusId);
typedef mcDrvError_t (*PFN_wcuDeviceGetPCIBusId_v4010)(char *pciBusId, int len, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuIpcGetEventHandle_v4010)(mcIpcEventHandle_t *pHandle, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuIpcOpenEventHandle_v4010)(mcDrvEvent_t *phEvent, mcIpcEventHandle_t handle);
typedef mcDrvError_t (*PFN_wcuIpcGetMemHandle_v4010)(mcIpcMemHandle_t *pHandle, mcDrvDeviceptr_t dptr);
typedef mcDrvError_t (*PFN_wcuIpcOpenMemHandle_v11000)(mcDrvDeviceptr_t *pdptr, mcIpcMemHandle_t handle, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuIpcCloseMemHandle_v4010)(mcDrvDeviceptr_t dptr);
typedef mcDrvError_t (*PFN_wcuMemHostRegister_v6050)(void *p, size_t bytesize, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuMemHostUnregister_v4000)(void *p);
typedef mcDrvError_t (*PFN_wcuMemcpy_v7000_ptds)(mcDrvDeviceptr_t dst, mcDrvDeviceptr_t src, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyPeer_v7000_ptds)(mcDrvDeviceptr_t dstDevice, mcDrvContext_t dstContext, mcDrvDeviceptr_t srcDevice, mcDrvContext_t srcContext, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoD_v7000_ptds)(mcDrvDeviceptr_t dstDevice, const void *srcHost, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoH_v7000_ptds)(void *dstHost, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoD_v7000_ptds)(mcDrvDeviceptr_t dstDevice, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoA_v7000_ptds)(MCarray dstArray, size_t dstOffset, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoD_v7000_ptds)(mcDrvDeviceptr_t dstDevice, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoA_v7000_ptds)(MCarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoH_v7000_ptds)(void *dstHost, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoA_v7000_ptds)(MCarray dstArray, size_t dstOffset, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpy2D_v7000_ptds)(const mcDrvMemcpy2D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy2DUnaligned_v7000_ptds)(const mcDrvMemcpy2D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy3D_v7000_ptds)(const mcDrvMemcpy3D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy3DPeer_v7000_ptds)(const mcDrvMemcpy3DPeer *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpyAsync_v7000_ptsz)(mcDrvDeviceptr_t dst, mcDrvDeviceptr_t src, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyPeerAsync_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, mcDrvContext_t dstContext, mcDrvDeviceptr_t srcDevice, mcDrvContext_t srcContext, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoDAsync_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, const void *srcHost, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoHAsync_v7000_ptsz)(void *dstHost, mcDrvDeviceptr_t srcDevice, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoDAsync_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, mcDrvDeviceptr_t srcDevice, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoAAsync_v7000_ptsz)(MCarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoHAsync_v7000_ptsz)(void *dstHost, MCarray srcArray, size_t srcOffset, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy2DAsync_v7000_ptsz)(const mcDrvMemcpy2D *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy3DAsync_v7000_ptsz)(const mcDrvMemcpy3D *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy3DPeerAsync_v7000_ptsz)(const mcDrvMemcpy3DPeer *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD8_v7000_ptds)(mcDrvDeviceptr_t dstDevice, unsigned char uc, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD16_v7000_ptds)(mcDrvDeviceptr_t dstDevice, unsigned short us, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD32_v7000_ptds)(mcDrvDeviceptr_t dstDevice, unsigned int ui, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD2D8_v7000_ptds)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D16_v7000_ptds)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D32_v7000_ptds)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemsetD8Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, unsigned char uc, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD16Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, unsigned short us, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD32Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, unsigned int ui, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D8Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D16Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D32Async_v7000_ptsz)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuArrayCreate_v3020)(MCarray *pHandle, const mcDrvArrayDescriptor *pAllocateArray);
typedef mcDrvError_t (*PFN_wcuArrayGetDescriptor_v3020)(mcDrvArrayDescriptor *pArrayDescriptor, MCarray hArray);
typedef mcDrvError_t (*PFN_wcuArrayGetSparseProperties_v11010)(mcDrvArraySparseProperties *sparseProperties, MCarray array);
typedef mcDrvError_t (*PFN_wcuMipmappedArrayGetSparseProperties_v11010)(mcDrvArraySparseProperties *sparseProperties, mcDrvMipmappedArray mipmap);

typedef mcDrvError_t (*PFN_wcuArrayGetMemoryRequirements_v11060)(mcDrvArrayMemoryRequirements *memoryRequirements, MCarray array, mcDrvDevice_t device);
typedef mcDrvError_t (*PFN_wcuMipmappedArrayGetMemoryRequirements_v11060)(mcDrvArrayMemoryRequirements *memoryRequirements, mcDrvMipmappedArray mipmap, mcDrvDevice_t device);

typedef mcDrvError_t (*PFN_wcuArrayGetPlane_v11020)(MCarray *pPlaneArray, MCarray hArray, unsigned int planeIdx);
typedef mcDrvError_t (*PFN_wcuArrayDestroy_v2000)(MCarray hArray);
typedef mcDrvError_t (*PFN_wcuArray3DCreate_v3020)(MCarray *pHandle, const mcDrvArray3DDescriptor *pAllocateArray);
typedef mcDrvError_t (*PFN_wcuArray3DGetDescriptor_v3020)(mcDrvArray3DDescriptor *pArrayDescriptor, MCarray hArray);
typedef mcDrvError_t (*PFN_wcuMipmappedArrayCreate_v5000)(mcDrvMipmappedArray *pHandle, const mcDrvArray3DDescriptor *pMipmappedArrayDesc, unsigned int numMipmapLevels);
typedef mcDrvError_t (*PFN_wcuMipmappedArrayGetLevel_v5000)(MCarray *pLevelArray, mcDrvMipmappedArray hMipmappedArray, unsigned int level);
typedef mcDrvError_t (*PFN_wcuMipmappedArrayDestroy_v5000)(mcDrvMipmappedArray hMipmappedArray);
typedef mcDrvError_t (*PFN_wcuMemAddressReserve_v10020)(mcDrvDeviceptr_t *ptr, size_t size, size_t alignment, mcDrvDeviceptr_t addr, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemAddressFree_v10020)(mcDrvDeviceptr_t ptr, size_t size);
typedef mcDrvError_t (*PFN_wcuMemCreate_v10020)(mcDrvMemGenericAllocationHandle_t *handle, size_t size, const mcDrvMemAllocationProp_t *prop, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemRelease_v10020)(mcDrvMemGenericAllocationHandle_t handle);
typedef mcDrvError_t (*PFN_wcuMemMap_v10020)(mcDrvDeviceptr_t ptr, size_t size, size_t offset, mcDrvMemGenericAllocationHandle_t handle, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemMapArrayAsync_v11010_ptsz)(mcDrvArrayMapInfo *mapInfoList, unsigned int count, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemUnmap_v10020)(mcDrvDeviceptr_t ptr, size_t size);
typedef mcDrvError_t (*PFN_wcuMemSetAccess_v10020)(mcDrvDeviceptr_t ptr, size_t size, const mcDrvMemAccessDesc_t *desc, size_t count);
typedef mcDrvError_t (*PFN_wcuMemGetAccess_v10020)(unsigned long long *flags, const mcDrvMemLocation_t *location, mcDrvDeviceptr_t ptr);
typedef mcDrvError_t (*PFN_wcuMemExportToShareableHandle_v10020)(void *shareableHandle, mcDrvMemGenericAllocationHandle_t handle, mcDrvMemAllocationHandleType_t handleType, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemImportFromShareableHandle_v10020)(mcDrvMemGenericAllocationHandle_t *handle, void *osHandle, mcDrvMemAllocationHandleType_t shHandleType);
typedef mcDrvError_t (*PFN_wcuMemGetAllocationGranularity_v10020)(size_t *granularity, const mcDrvMemAllocationProp_t *prop, mcMemAllocationGranularity_flags option);
typedef mcDrvError_t (*PFN_wcuMemGetAllocationPropertiesFromHandle_v10020)(mcDrvMemAllocationProp_t *prop, mcDrvMemGenericAllocationHandle_t handle);
typedef mcDrvError_t (*PFN_wcuMemRetainAllocationHandle_v11000)(mcDrvMemGenericAllocationHandle_t *handle, void *addr);
typedef mcDrvError_t (*PFN_wcuMemFreeAsync_v11020_ptsz)(mcDrvDeviceptr_t dptr, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemAllocAsync_v11020_ptsz)(mcDrvDeviceptr_t *dptr, size_t bytesize, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemPoolTrimTo_v11020)(mcDrvMemPool_t pool, size_t minBytesToKeep);
typedef mcDrvError_t (*PFN_wcuMemPoolSetAttribute_v11020)(mcDrvMemPool_t pool, mcDrvMemPoolAttr_t attr, void *value);
typedef mcDrvError_t (*PFN_wcuMemPoolGetAttribute_v11020)(mcDrvMemPool_t pool, mcDrvMemPoolAttr_t attr, void *value);
typedef mcDrvError_t (*PFN_wcuMemPoolSetAccess_v11020)(mcDrvMemPool_t pool, const mcDrvMemAccessDesc_t *map, size_t count);
typedef mcDrvError_t (*PFN_wcuMemPoolGetAccess_v11020)(mcDrvMemAccess_flags_t *flags, mcDrvMemPool_t memPool, mcDrvMemLocation_t *location);
typedef mcDrvError_t (*PFN_wcuMemPoolCreate_v11020)(mcDrvMemPool_t *pool, const mcDrvMemPoolProps_t *poolProps);
typedef mcDrvError_t (*PFN_wcuMemPoolDestroy_v11020)(mcDrvMemPool_t pool);
typedef mcDrvError_t (*PFN_wcuMemAllocFromPoolAsync_v11020_ptsz)(mcDrvDeviceptr_t *dptr, size_t bytesize, mcDrvMemPool_t pool, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemPoolExportToShareableHandle_v11020)(void *handle_out, mcDrvMemPool_t pool, mcDrvMemAllocationHandleType_t handleType, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemPoolImportFromShareableHandle_v11020)(mcDrvMemPool_t *pool_out, void *handle, mcDrvMemAllocationHandleType_t handleType, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMemPoolExportPointer_v11020)(mcDrvMemPoolPtrExportData_t *shareData_out, mcDrvDeviceptr_t ptr);
typedef mcDrvError_t (*PFN_wcuMemPoolImportPointer_v11020)(mcDrvDeviceptr_t *ptr_out, mcDrvMemPool_t pool, mcDrvMemPoolPtrExportData_t *shareData);
typedef mcDrvError_t (*PFN_wcuPointerGetAttribute_v4000)(void *data, mcDrvPointerAttributeType attribute, mcDrvDeviceptr_t ptr);
typedef mcDrvError_t (*PFN_wcuMemPrefetchAsync_v8000_ptsz)(mcDrvDeviceptr_t devPtr, size_t count, mcDrvDevice_t dstDevice, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemAdvise_v8000)(mcDrvDeviceptr_t devPtr, size_t count, mcDrvMemoryAdvise advice, mcDrvDevice_t device);
typedef mcDrvError_t (*PFN_wcuMemRangeGetAttribute_v8000)(void *data, size_t dataSize, mcDrvMemoryAttributeType_t attribute, mcDrvDeviceptr_t devPtr, size_t count);
typedef mcDrvError_t (*PFN_wcuMemRangeGetAttributes_v8000)(void **data, size_t *dataSizes, mcDrvMemoryAttributeType_t *attributes, size_t numAttributes, mcDrvDeviceptr_t devPtr, size_t count);
typedef mcDrvError_t (*PFN_wcuPointerSetAttribute_v6000)(const void *value, mcDrvPointerAttributeType attribute, mcDrvDeviceptr_t ptr);
typedef mcDrvError_t (*PFN_wcuPointerGetAttributes_v7000)(unsigned int numAttributes, mcDrvPointerAttributeType *attributes, void **data, mcDrvDeviceptr_t ptr);
typedef mcDrvError_t (*PFN_wcuStreamCreate_v2000)(mcDrvStream_t *phStream, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuStreamCreateWithPriority_v5050)(mcDrvStream_t *phStream, unsigned int flags, int priority);
typedef mcDrvError_t (*PFN_wcuStreamGetPriority_v7000_ptsz)(mcDrvStream_t hStream, int *priority);
typedef mcDrvError_t (*PFN_wcuStreamGetFlags_v7000_ptsz)(mcDrvStream_t hStream, unsigned int *flags);
typedef mcDrvError_t (*PFN_wcuStreamGetCtx_v9020_ptsz)(mcDrvStream_t hStream, mcDrvContext_t *pctx);
typedef mcDrvError_t (*PFN_wcuStreamWaitEvent_v7000_ptsz)(mcDrvStream_t hStream, mcDrvEvent_t hEvent, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuStreamAddCallback_v7000_ptsz)(mcDrvStream_t hStream, mcDrvStreamCallback_t callback, void *userData, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamBeginCapture_v10010_ptsz)(mcDrvStream_t hStream, mcStreamCaptureMode mode);
typedef mcDrvError_t (*PFN_wcuThreadExchangeStreamCaptureMode_v10010)(mcStreamCaptureMode *mode);
typedef mcDrvError_t (*PFN_wcuStreamEndCapture_v10000_ptsz)(mcDrvStream_t hStream, mcDrvGraph *phGraph);
typedef mcDrvError_t (*PFN_wcuStreamIsCapturing_v10000_ptsz)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus);
typedef mcDrvError_t (*PFN_wcuStreamGetCaptureInfo_v10010_ptsz)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus_out, mcuint64_t *id_out);
typedef mcDrvError_t (*PFN_wcuStreamGetCaptureInfo_v11030_ptsz)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus_out, mcuint64_t *id_out, mcDrvGraph *graph_out, const mcDrvGraphNode **dependencies_out, size_t *numDependencies_out);
typedef mcDrvError_t (*PFN_wcuStreamUpdateCaptureDependencies_v11030_ptsz)(mcDrvStream_t hStream, mcDrvGraphNode *dependencies, size_t numDependencies, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamAttachMemAsync_v7000_ptsz)(mcDrvStream_t hStream, mcDrvDeviceptr_t dptr, size_t length, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamQuery_v7000_ptsz)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamSynchronize_v7000_ptsz)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamDestroy_v4000)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamCopyAttributes_v11000_ptsz)(mcDrvStream_t dst, mcDrvStream_t src);
typedef mcDrvError_t (*PFN_wcuStreamGetAttribute_v11000_ptsz)(mcDrvStream_t hStream, mcDrvStreamAttrID attr, mcDrvStreamAttrValue *value_out);
typedef mcDrvError_t (*PFN_wcuStreamSetAttribute_v11000_ptsz)(mcDrvStream_t hStream, mcDrvStreamAttrID attr, const mcDrvStreamAttrValue *value);
typedef mcDrvError_t (*PFN_wcuEventCreate_v2000)(mcDrvEvent_t *phEvent, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuEventRecord_v7000_ptsz)(mcDrvEvent_t hEvent, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuEventRecordWithFlags_v11010_ptsz)(mcDrvEvent_t hEvent, mcDrvStream_t hStream, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuEventQuery_v2000)(mcDrvEvent_t hEvent);
typedef mcDrvError_t (*PFN_wcuEventSynchronize_v2000)(mcDrvEvent_t hEvent);
typedef mcDrvError_t (*PFN_wcuEventDestroy_v4000)(mcDrvEvent_t hEvent);
typedef mcDrvError_t (*PFN_wcuEventElapsedTime_v2000)(float *pMilliseconds, mcDrvEvent_t hStart, mcDrvEvent_t hEnd);
typedef mcDrvError_t (*PFN_wcuImportExternalMemory_v10000)(mcDrvExternalMemory *extMem_out, const mcDrvExternalMemoryHandleDesc *memHandleDesc);
typedef mcDrvError_t (*PFN_wcuExternalMemoryGetMappedBuffer_v10000)(mcDrvDeviceptr_t *devPtr, mcDrvExternalMemory extMem, const mcDrvExternalMemoryBufferDesc *bufferDesc);
typedef mcDrvError_t (*PFN_wcuExternalMemoryGetMappedMipmappedArray_v10000)(mcDrvMipmappedArray *mipmap, mcDrvExternalMemory extMem, const mcDrvExternalMemoryMipmappedArrayDesc *mipmapDesc);
typedef mcDrvError_t (*PFN_wcuDestroyExternalMemory_v10000)(mcDrvExternalMemory extMem);
typedef mcDrvError_t (*PFN_wcuImportExternalSemaphore_v10000)(mcDrvExternalSemaphore *extSem_out, const mcDrvExternalSemaphorHandleDesc *semHandleDesc);
typedef mcDrvError_t (*PFN_wcuSignalExternalSemaphoresAsync_v10000_ptsz)(const mcDrvExternalSemaphore *extSemArray, const mcDrvExternalSemaphoreSignalParams *paramsArray, unsigned int numExtSems, mcDrvStream_t stream);
typedef mcDrvError_t (*PFN_wcuWaitExternalSemaphoresAsync_v10000_ptsz)(const mcDrvExternalSemaphore *extSemArray, const mcDrvExternalSemaphoreWaitParams *paramsArray, unsigned int numExtSems, mcDrvStream_t stream);
typedef mcDrvError_t (*PFN_wcuDestroyExternalSemaphore_v10000)(mcDrvExternalSemaphore extSem);
typedef mcDrvError_t (*PFN_wcuStreamWaitValue32_v8000_ptsz)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint32_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWaitValue64_v9000_ptsz)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint64_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWriteValue32_v8000_ptsz)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint32_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWriteValue64_v9000_ptsz)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint64_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamBatchMemOp_v8000_ptsz)(mcDrvStream_t stream, unsigned int count, mcStreamBatchMemOpParams_v1 *paramArray, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuFuncGetAttribute_v2020)(int *pi, mcFunction_attribute attrib, mcDrvFunction_t hfunc);
typedef mcDrvError_t (*PFN_wcuFuncSetAttribute_v9000)(mcDrvFunction_t hfunc, mcFunction_attribute attrib, int value);
typedef mcDrvError_t (*PFN_wcuFuncSetCacheConfig_v3000)(mcDrvFunction_t hfunc, mcDrvfunc_cache_t config);
typedef mcDrvError_t (*PFN_wcuFuncSetSharedMemConfig_v4020)(mcDrvFunction_t hfunc, mcDrvsharedconfig_t config);
typedef mcDrvError_t (*PFN_wcuLaunchKernel_v7000_ptsz)(mcDrvFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, mcDrvStream_t hStream, void **kernelParams, void **extra);



typedef mcDrvError_t (*PFN_wcuLaunchCooperativeKernel_v9000_ptsz)(mcDrvFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, mcDrvStream_t hStream, void **kernelParams);
typedef mcDrvError_t (*PFN_wcuLaunchCooperativeKernelMultiDevice_v9000)(mcDrvLaunchParams_v1 *launchParamsList, unsigned int numDevices, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuLaunchHostFunc_v10000_ptsz)(mcDrvStream_t hStream, mcHostFn_t fn, void *userData);
typedef mcDrvError_t (*PFN_wcuFuncSetBlockShape_v2000)(mcDrvFunction_t hfunc, int x, int y, int z);
typedef mcDrvError_t (*PFN_wcuFuncSetSharedSize_v2000)(mcDrvFunction_t hfunc, unsigned int bytes);
typedef mcDrvError_t (*PFN_wcuParamSetSize_v2000)(mcDrvFunction_t hfunc, unsigned int numbytes);
typedef mcDrvError_t (*PFN_wcuParamSeti_v2000)(mcDrvFunction_t hfunc, int offset, unsigned int value);
typedef mcDrvError_t (*PFN_wcuParamSetf_v2000)(mcDrvFunction_t hfunc, int offset, float value);
typedef mcDrvError_t (*PFN_wcuParamSetv_v2000)(mcDrvFunction_t hfunc, int offset, void *ptr, unsigned int numbytes);
typedef mcDrvError_t (*PFN_wcuLaunch_v2000)(mcDrvFunction_t f);
typedef mcDrvError_t (*PFN_wcuLaunchGrid_v2000)(mcDrvFunction_t f, int grid_width, int grid_height);
typedef mcDrvError_t (*PFN_wcuLaunchGridAsync_v2000)(mcDrvFunction_t f, int grid_width, int grid_height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuParamSetTexRef_v2000)(mcDrvFunction_t hfunc, int texunit, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuGraphCreate_v10000)(mcDrvGraph *phGraph, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuGraphAddKernelNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvKernelNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphKernelNodeGetParams_v10000)(mcDrvGraphNode hNode, mcDrvKernelNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphKernelNodeSetParams_v10000)(mcDrvGraphNode hNode, const mcDrvKernelNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphAddMemcpyNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvMemcpy3D *copyParams, mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuGraphMemcpyNodeGetParams_v10000)(mcDrvGraphNode hNode, mcDrvMemcpy3D *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphMemcpyNodeSetParams_v10000)(mcDrvGraphNode hNode, const mcDrvMemcpy3D *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphAddMemsetNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvMemsetNodeParams *memsetParams, mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuGraphMemsetNodeGetParams_v10000)(mcDrvGraphNode hNode, mcDrvMemsetNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphMemsetNodeSetParams_v10000)(mcDrvGraphNode hNode, const mcDrvMemsetNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphAddHostNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvHostNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphHostNodeGetParams_v10000)(mcDrvGraphNode hNode, mcDrvHostNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphHostNodeSetParams_v10000)(mcDrvGraphNode hNode, const mcDrvHostNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphAddChildGraphNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, mcDrvGraph childGraph);
typedef mcDrvError_t (*PFN_wcuGraphChildGraphNodeGetGraph_v10000)(mcDrvGraphNode hNode, mcDrvGraph *phGraph);
typedef mcDrvError_t (*PFN_wcuGraphAddEmptyNode_v10000)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies);
typedef mcDrvError_t (*PFN_wcuGraphAddEventRecordNode_v11010)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphEventRecordNodeGetEvent_v11010)(mcDrvGraphNode hNode, mcDrvEvent_t *event_out);
typedef mcDrvError_t (*PFN_wcuGraphEventRecordNodeSetEvent_v11010)(mcDrvGraphNode hNode, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphAddEventWaitNode_v11010)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphEventWaitNodeGetEvent_v11010)(mcDrvGraphNode hNode, mcDrvEvent_t *event_out);
typedef mcDrvError_t (*PFN_wcuGraphEventWaitNodeSetEvent_v11010)(mcDrvGraphNode hNode, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphAddExternalSemaphoresSignalNode_v11020)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvExtSemSignalNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphExternalSemaphoresSignalNodeGetParams_v11020)(mcDrvGraphNode hNode, mcDrvExtSemSignalNodeParams *params_out);
typedef mcDrvError_t (*PFN_wcuGraphExternalSemaphoresSignalNodeSetParams_v11020)(mcDrvGraphNode hNode, const mcDrvExtSemSignalNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphAddExternalSemaphoresWaitNode_v11020)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, const mcDrvExtSemWaitNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphExternalSemaphoresWaitNodeGetParams_v11020)(mcDrvGraphNode hNode, mcDrvExtSemWaitNodeParams *params_out);
typedef mcDrvError_t (*PFN_wcuGraphExternalSemaphoresWaitNodeSetParams_v11020)(mcDrvGraphNode hNode, const mcDrvExtSemWaitNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphClone_v10000)(mcDrvGraph *phGraphClone, mcDrvGraph originalGraph);
typedef mcDrvError_t (*PFN_wcuGraphNodeFindInClone_v10000)(mcDrvGraphNode *phNode, mcDrvGraphNode hOriginalNode, mcDrvGraph hClonedGraph);
typedef mcDrvError_t (*PFN_wcuGraphNodeGetType_v10000)(mcDrvGraphNode hNode, mcDrvGraphNodeType *type);
typedef mcDrvError_t (*PFN_wcuGraphGetNodes_v10000)(mcDrvGraph hGraph, mcDrvGraphNode *nodes, size_t *numNodes);
typedef mcDrvError_t (*PFN_wcuGraphGetRootNodes_v10000)(mcDrvGraph hGraph, mcDrvGraphNode *rootNodes, size_t *numRootNodes);
typedef mcDrvError_t (*PFN_wcuGraphGetEdges_v10000)(mcDrvGraph hGraph, mcDrvGraphNode *from, mcDrvGraphNode *to, size_t *numEdges);
typedef mcDrvError_t (*PFN_wcuGraphNodeGetDependencies_v10000)(mcDrvGraphNode hNode, mcDrvGraphNode *dependencies, size_t *numDependencies);
typedef mcDrvError_t (*PFN_wcuGraphNodeGetDependentNodes_v10000)(mcDrvGraphNode hNode, mcDrvGraphNode *dependentNodes, size_t *numDependentNodes);
typedef mcDrvError_t (*PFN_wcuGraphAddDependencies_v10000)(mcDrvGraph hGraph, const mcDrvGraphNode *from, const mcDrvGraphNode *to, size_t numDependencies);
typedef mcDrvError_t (*PFN_wcuGraphRemoveDependencies_v10000)(mcDrvGraph hGraph, const mcDrvGraphNode *from, const mcDrvGraphNode *to, size_t numDependencies);
typedef mcDrvError_t (*PFN_wcuGraphDestroyNode_v10000)(mcDrvGraphNode hNode);
typedef mcDrvError_t (*PFN_wcuGraphInstantiate_v11000)(mcDrvGraphExec *phGraphExec, mcDrvGraph hGraph, mcDrvGraphNode *phErrorNode, char *logBuffer, size_t bufferSize);
typedef mcDrvError_t (*PFN_wcuGraphInstantiateWithFlags_v11040)(mcDrvGraphExec *phGraphExec, mcDrvGraph hGraph, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuGraphExecKernelNodeSetParams_v10010)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvKernelNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphExecMemcpyNodeSetParams_v10020)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvMemcpy3D *copyParams, mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuGraphExecMemsetNodeSetParams_v10020)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvMemsetNodeParams *memsetParams, mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuGraphExecHostNodeSetParams_v10020)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvHostNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphExecChildGraphNodeSetParams_v11010)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, mcDrvGraph childGraph);
typedef mcDrvError_t (*PFN_wcuGraphExecEventRecordNodeSetEvent_v11010)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphExecEventWaitNodeSetEvent_v11010)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, mcDrvEvent_t event);
typedef mcDrvError_t (*PFN_wcuGraphExecExternalSemaphoresSignalNodeSetParams_v11020)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvExtSemSignalNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphExecExternalSemaphoresWaitNodeSetParams_v11020)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, const mcDrvExtSemWaitNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphUpload_v11010_ptsz)(mcDrvGraphExec hGraphExec, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGraphLaunch_v10000_ptsz)(mcDrvGraphExec hGraphExec, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGraphExecDestroy_v10000)(mcDrvGraphExec hGraphExec);
typedef mcDrvError_t (*PFN_wcuGraphDestroy_v10000)(mcDrvGraph hGraph);
typedef mcDrvError_t (*PFN_wcuGraphExecUpdate_v10020)(mcDrvGraphExec hGraphExec, mcDrvGraph hGraph, mcDrvGraphNode *hErrorNode_out, mcGraphExecUpdateResult *updateResult_out);
typedef mcDrvError_t (*PFN_wcuGraphKernelNodeCopyAttributes_v11000)(mcDrvGraphNode dst, mcDrvGraphNode src);
typedef mcDrvError_t (*PFN_wcuGraphKernelNodeGetAttribute_v11000)(mcDrvGraphNode hNode, mcDrvkernelNodeAttrID attr, mcDrvKernelNodeAttrValue *value_out);
typedef mcDrvError_t (*PFN_wcuGraphKernelNodeSetAttribute_v11000)(mcDrvGraphNode hNode, mcDrvkernelNodeAttrID attr, const mcDrvKernelNodeAttrValue *value);
typedef mcDrvError_t (*PFN_wcuGraphDebugDotPrint_v11030)(mcDrvGraph hGraph, const char *path, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuGraphAddMemAllocNode_v11040)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, mcDrvMemAllocNodeParams *nodeParams);
typedef mcDrvError_t (*PFN_wcuGraphMemAllocNodeGetParams_v11040)(mcDrvGraphNode hNode, mcDrvMemAllocNodeParams *params_out);
typedef mcDrvError_t (*PFN_wcuGraphAddMemFreeNode_v11040)(mcDrvGraphNode *phGraphNode, mcDrvGraph hGraph, const mcDrvGraphNode *dependencies, size_t numDependencies, mcDrvDeviceptr_t dptr);
typedef mcDrvError_t (*PFN_wcuGraphMemFreeNodeGetParams_v11040)(mcDrvGraphNode hNode, mcDrvDeviceptr_t *dptr_out);
typedef mcDrvError_t (*PFN_wcuGraphNodeSetEnabled_v11060)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, unsigned int isEnabled);
typedef mcDrvError_t (*PFN_wcuGraphNodeGetEnabled_v11060)(mcDrvGraphExec hGraphExec, mcDrvGraphNode hNode, unsigned int *isEnabled);
typedef mcDrvError_t (*PFN_wcuDeviceGraphMemTrim_v11040)(mcDrvDevice_t device);
typedef mcDrvError_t (*PFN_wcuDeviceGetGraphMemAttribute_v11040)(mcDrvDevice_t device, mcGraphMemAttributeType attr, void* value);
typedef mcDrvError_t (*PFN_wcuDeviceSetGraphMemAttribute_v11040)(mcDrvDevice_t device, mcGraphMemAttributeType attr, void* value);
typedef mcDrvError_t (*PFN_wcuOccupancyMaxActiveBlocksPerMultiprocessor_v6050)(int *numBlocks, mcDrvFunction_t func, int blockSize, size_t dynamicSMemSize);
typedef mcDrvError_t (*PFN_wcuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_v7000)(int *numBlocks, mcDrvFunction_t func, int blockSize, size_t dynamicSMemSize, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuOccupancyMaxPotentialBlockSize_v6050)(int *minGridSize, int *blockSize, mcDrvFunction_t func, mcOccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit);
typedef mcDrvError_t (*PFN_wcuOccupancyMaxPotentialBlockSizeWithFlags_v7000)(int *minGridSize, int *blockSize, mcDrvFunction_t func, mcOccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuOccupancyAvailableDynamicSMemPerBlock_v10020)(size_t *dynamicSmemSize, mcDrvFunction_t func, int numBlocks, int blockSize);
typedef mcDrvError_t (*PFN_wcuTexRefSetArray_v2000)(mcDrvTexref hTexRef, MCarray hArray, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuTexRefSetMipmappedArray_v5000)(mcDrvTexref hTexRef, mcDrvMipmappedArray hMipmappedArray, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddress_v3020)(size_t *ByteOffset, mcDrvTexref hTexRef, mcDrvDeviceptr_t dptr, size_t bytes);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddress2D_v4010)(mcDrvTexref hTexRef, const mcDrvArrayDescriptor *desc, mcDrvDeviceptr_t dptr, size_t Pitch);
typedef mcDrvError_t (*PFN_wcuTexRefSetFormat_v2000)(mcDrvTexref hTexRef, mcArray_Format fmt, int NumPackedComponents);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddressMode_v2000)(mcDrvTexref hTexRef, int dim, mcDrvAddress_mode am);
typedef mcDrvError_t (*PFN_wcuTexRefSetFilterMode_v2000)(mcDrvTexref hTexRef, mcDrvFilter_mode fm);
typedef mcDrvError_t (*PFN_wcuTexRefSetMipmapFilterMode_v5000)(mcDrvTexref hTexRef, mcDrvFilter_mode fm);
typedef mcDrvError_t (*PFN_wcuTexRefSetMipmapLevelBias_v5000)(mcDrvTexref hTexRef, float bias);
typedef mcDrvError_t (*PFN_wcuTexRefSetMipmapLevelClamp_v5000)(mcDrvTexref hTexRef, float minMipmapLevelClamp, float maxMipmapLevelClamp);
typedef mcDrvError_t (*PFN_wcuTexRefSetMaxAnisotropy_v5000)(mcDrvTexref hTexRef, unsigned int maxAniso);
typedef mcDrvError_t (*PFN_wcuTexRefSetBorderColor_v8000)(mcDrvTexref hTexRef, float *pBorderColor);
typedef mcDrvError_t (*PFN_wcuTexRefSetFlags_v2000)(mcDrvTexref hTexRef, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuTexRefGetAddress_v3020)(mcDrvDeviceptr_t *pdptr, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetArray_v2000)(MCarray *phArray, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetMipmappedArray_v5000)(mcDrvMipmappedArray *phMipmappedArray, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetAddressMode_v2000)(mcDrvAddress_mode *pam, mcDrvTexref hTexRef, int dim);
typedef mcDrvError_t (*PFN_wcuTexRefGetFilterMode_v2000)(mcDrvFilter_mode *pfm, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetFormat_v2000)(mcArray_Format *pFormat, int *pNumChannels, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetMipmapFilterMode_v5000)(mcDrvFilter_mode *pfm, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetMipmapLevelBias_v5000)(float *pbias, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetMipmapLevelClamp_v5000)(float *pminMipmapLevelClamp, float *pmaxMipmapLevelClamp, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetMaxAnisotropy_v5000)(int *pmaxAniso, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetBorderColor_v8000)(float *pBorderColor, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefGetFlags_v2000)(unsigned int *pFlags, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefCreate_v2000)(mcDrvTexref *pTexRef);
typedef mcDrvError_t (*PFN_wcuTexRefDestroy_v2000)(mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuSurfRefSetArray_v3000)(mcDrvSurfref hSurfRef, MCarray hArray, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuSurfRefGetArray_v3000)(MCarray *phArray, mcDrvSurfref hSurfRef);
typedef mcDrvError_t (*PFN_wcuTexObjectCreate_v5000)(mcDrvTexObject *pTexObject, const mcDrvResourceDesc *pResDesc, const mcDrvTextureDesc *pTexDesc, const mcDrvResourceViewDesc *pResViewDesc);
typedef mcDrvError_t (*PFN_wcuTexObjectDestroy_v5000)(mcDrvTexObject texObject);
typedef mcDrvError_t (*PFN_wcuTexObjectGetResourceDesc_v5000)(mcDrvResourceDesc *pResDesc, mcDrvTexObject texObject);
typedef mcDrvError_t (*PFN_wcuTexObjectGetTextureDesc_v5000)(mcDrvTextureDesc *pTexDesc, mcDrvTexObject texObject);
typedef mcDrvError_t (*PFN_wcuTexObjectGetResourceViewDesc_v5000)(mcDrvResourceViewDesc *pResViewDesc, mcDrvTexObject texObject);
typedef mcDrvError_t (*PFN_wcuSurfObjectCreate_v5000)(mcDrvSurfObject *pSurfObject, const mcDrvResourceDesc *pResDesc);
typedef mcDrvError_t (*PFN_wcuSurfObjectDestroy_v5000)(mcDrvSurfObject surfObject);
typedef mcDrvError_t (*PFN_wcuSurfObjectGetResourceDesc_v5000)(mcDrvResourceDesc *pResDesc, mcDrvSurfObject surfObject);
typedef mcDrvError_t (*PFN_wcuDeviceCanAccessPeer_v4000)(int *canAccessPeer, mcDrvDevice_t dev, mcDrvDevice_t peerDev);
typedef mcDrvError_t (*PFN_wcuCtxEnablePeerAccess_v4000)(mcDrvContext_t peerContext, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuCtxDisablePeerAccess_v4000)(mcDrvContext_t peerContext);
typedef mcDrvError_t (*PFN_wcuDeviceGetP2PAttribute_v8000)(int *value, mcDrvDeviceP2PAttribute attrib, mcDrvDevice_t srcDevice, mcDrvDevice_t dstDevice);
typedef mcDrvError_t (*PFN_wcuGraphicsUnregisterResource_v3000)(mcDrvGraphicsResource resource);
typedef mcDrvError_t (*PFN_wcuGraphicsSubResourceGetMappedArray_v3000)(MCarray *pArray, mcDrvGraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel);
typedef mcDrvError_t (*PFN_wcuGraphicsResourceGetMappedMipmappedArray_v5000)(mcDrvMipmappedArray *pMipmappedArray, mcDrvGraphicsResource resource);
typedef mcDrvError_t (*PFN_wcuGraphicsResourceGetMappedPointer_v3020)(mcDrvDeviceptr_t *pDevPtr, size_t *pSize, mcDrvGraphicsResource resource);
typedef mcDrvError_t (*PFN_wcuGraphicsResourceSetMapFlags_v6050)(mcDrvGraphicsResource resource, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuGraphicsMapResources_v7000_ptsz)(unsigned int count, mcDrvGraphicsResource *resources, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGraphicsUnmapResources_v7000_ptsz)(unsigned int count, mcDrvGraphicsResource *resources, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGetExportTable_v3000)(const void **ppExportTable, const mcDrvUuid_t *pExportTableId);
typedef mcDrvError_t (*PFN_wcuFuncGetModule_v11000)(mcDrvModule_t *hmod, mcDrvFunction_t hfunc);
typedef mcDrvError_t (*PFN_wcuGetProcAddress_v11030)(const char *symbol, void **pfn, int driverVersion, mcuint64_t flags);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoD_v3020)(mcDrvDeviceptr_t dstDevice, const void *srcHost, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoH_v3020)(void *dstHost, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoD_v3020)(mcDrvDeviceptr_t dstDevice, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoA_v3020)(MCarray dstArray, size_t dstOffset, mcDrvDeviceptr_t srcDevice, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoD_v3020)(mcDrvDeviceptr_t dstDevice, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoA_v3020)(MCarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoH_v3020)(void *dstHost, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoA_v3020)(MCarray dstArray, size_t dstOffset, MCarray srcArray, size_t srcOffset, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoAAsync_v3020)(MCarray dstArray, size_t dstOffset, const void *srcHost, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoHAsync_v3020)(void *dstHost, MCarray srcArray, size_t srcOffset, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy2D_v3020)(const mcDrvMemcpy2D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy2DUnaligned_v3020)(const mcDrvMemcpy2D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy3D_v3020)(const mcDrvMemcpy3D *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoDAsync_v3020)(mcDrvDeviceptr_t dstDevice, const void *srcHost, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoHAsync_v3020)(void *dstHost, mcDrvDeviceptr_t srcDevice, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoDAsync_v3020)(mcDrvDeviceptr_t dstDevice, mcDrvDeviceptr_t srcDevice, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy2DAsync_v3020)(const mcDrvMemcpy2D *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy3DAsync_v3020)(const mcDrvMemcpy3D *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD8_v3020)(mcDrvDeviceptr_t dstDevice, unsigned char uc, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD16_v3020)(mcDrvDeviceptr_t dstDevice, unsigned short us, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD32_v3020)(mcDrvDeviceptr_t dstDevice, unsigned int ui, size_t N);
typedef mcDrvError_t (*PFN_wcuMemsetD2D8_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D16_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D32_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height);
typedef mcDrvError_t (*PFN_wcuMemcpy_v4000)(mcDrvDeviceptr_t dst, mcDrvDeviceptr_t src, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAsync_v4000)(mcDrvDeviceptr_t dst, mcDrvDeviceptr_t src, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyPeer_v4000)(mcDrvDeviceptr_t dstDevice, mcDrvContext_t dstContext, mcDrvDeviceptr_t srcDevice, mcDrvContext_t srcContext, size_t ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyPeerAsync_v4000)(mcDrvDeviceptr_t dstDevice, mcDrvContext_t dstContext, mcDrvDeviceptr_t srcDevice, mcDrvContext_t srcContext, size_t ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy3DPeer_v4000)(const mcDrvMemcpy3DPeer *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy3DPeerAsync_v4000)(const mcDrvMemcpy3DPeer *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD8Async_v3020)(mcDrvDeviceptr_t dstDevice, unsigned char uc, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD16Async_v3020)(mcDrvDeviceptr_t dstDevice, unsigned short us, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD32Async_v3020)(mcDrvDeviceptr_t dstDevice, unsigned int ui, size_t N, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D8Async_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D16Async_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD2D32Async_v3020)(mcDrvDeviceptr_t dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamGetPriority_v5050)(mcDrvStream_t hStream, int *priority);
typedef mcDrvError_t (*PFN_wcuStreamGetFlags_v5050)(mcDrvStream_t hStream, unsigned int *flags);
typedef mcDrvError_t (*PFN_wcuStreamGetCtx_v9020)(mcDrvStream_t hStream, mcDrvContext_t *pctx);
typedef mcDrvError_t (*PFN_wcuStreamWaitEvent_v3020)(mcDrvStream_t hStream, mcDrvEvent_t hEvent, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuStreamAddCallback_v5000)(mcDrvStream_t hStream, mcDrvStreamCallback_t callback, void *userData, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamAttachMemAsync_v6000)(mcDrvStream_t hStream, mcDrvDeviceptr_t dptr, size_t length, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamQuery_v2000)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamSynchronize_v2000)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuEventRecord_v2000)(mcDrvEvent_t hEvent, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuEventRecordWithFlags_v11010)(mcDrvEvent_t hEvent, mcDrvStream_t hStream, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuLaunchKernel_v4000)(mcDrvFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, mcDrvStream_t hStream, void **kernelParams, void **extra);



typedef mcDrvError_t (*PFN_wcuLaunchHostFunc_v10000)(mcDrvStream_t hStream, mcHostFn_t fn, void *userData);
typedef mcDrvError_t (*PFN_wcuGraphicsMapResources_v3000)(unsigned int count, mcDrvGraphicsResource *resources, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGraphicsUnmapResources_v3000)(unsigned int count, mcDrvGraphicsResource *resources, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamWriteValue32_v8000)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint32_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWaitValue32_v8000)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint32_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWriteValue64_v9000)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint64_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamWaitValue64_v9000)(mcDrvStream_t stream, mcDrvDeviceptr_t addr, mcuint64_t value, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamBatchMemOp_v8000)(mcDrvStream_t stream, unsigned int count, mcDrvStreamBatchMemOpParams *paramArray, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuMemPrefetchAsync_v8000)(mcDrvDeviceptr_t devPtr, size_t count, mcDrvDevice_t dstDevice, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuLaunchCooperativeKernel_v9000)(mcDrvFunction_t f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, mcDrvStream_t hStream, void **kernelParams);
typedef mcDrvError_t (*PFN_wcuSignalExternalSemaphoresAsync_v10000)(const mcDrvExternalSemaphore *extSemArray, const mcDrvExternalSemaphoreSignalParams *paramsArray, unsigned int numExtSems, mcDrvStream_t stream);
typedef mcDrvError_t (*PFN_wcuWaitExternalSemaphoresAsync_v10000)(const mcDrvExternalSemaphore *extSemArray, const mcDrvExternalSemaphoreWaitParams *paramsArray, unsigned int numExtSems, mcDrvStream_t stream);
typedef mcDrvError_t (*PFN_wcuStreamBeginCapture_v10010)(mcDrvStream_t hStream, mcStreamCaptureMode mode);
typedef mcDrvError_t (*PFN_wcuStreamEndCapture_v10000)(mcDrvStream_t hStream, mcDrvGraph *phGraph);
typedef mcDrvError_t (*PFN_wcuStreamIsCapturing_v10000)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus);
typedef mcDrvError_t (*PFN_wcuStreamGetCaptureInfo_v10010)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus_out, mcuint64_t *id_out);
typedef mcDrvError_t (*PFN_wcuStreamGetCaptureInfo_v11030)(mcDrvStream_t hStream, mcStreamCaptureStatus *captureStatus_out, mcuint64_t *id_out, mcDrvGraph *graph_out, const mcDrvGraphNode **dependencies_out, size_t *numDependencies_out);
typedef mcDrvError_t (*PFN_wcuStreamUpdateCaptureDependencies_v11030)(mcDrvStream_t hStream, mcDrvGraphNode *dependencies, size_t numDependencies, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuGraphUpload_v11010)(mcDrvGraphExec hGraph, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuGraphLaunch_v10000)(mcDrvGraphExec hGraph, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamCopyAttributes_v11000)(mcDrvStream_t dstStream, mcDrvStream_t srcStream);
typedef mcDrvError_t (*PFN_wcuStreamGetAttribute_v11000)(mcDrvStream_t hStream, mcDrvStreamAttrID attr, mcDrvStreamAttrValue *value);
typedef mcDrvError_t (*PFN_wcuStreamSetAttribute_v11000)(mcDrvStream_t hStream, mcDrvStreamAttrID attr, const mcDrvStreamAttrValue *param);
typedef mcDrvError_t (*PFN_wcuMemMapArrayAsync_v11010)(mcDrvArrayMapInfo *mapInfoList, unsigned int count, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemFreeAsync_v11020)(mcDrvDeviceptr_t dptr, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemAllocAsync_v11020)(mcDrvDeviceptr_t *dptr, size_t bytesize, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemAllocFromPoolAsync_v11020)(mcDrvDeviceptr_t *dptr, size_t bytesize, mcDrvMemPool_t pool, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuFlushGPUDirectRDMAWrites_v11030)(mcDrvFlushGPUDirectRDMAWritesTarget target, mcDrvFlushGPUDirectRDMAWritesScope scope);
typedef mcDrvError_t (*PFN_wcuUserObjectCreate_v11030)(mcDrvUserObject *object_out, void *ptr, mcHostFn_t destroy, unsigned int initialRefcount, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuUserObjectRetain_v11030)(mcDrvUserObject object, unsigned int count);
typedef mcDrvError_t (*PFN_wcuUserObjectRelease_v11030)(mcDrvUserObject object, unsigned int count);
typedef mcDrvError_t (*PFN_wcuGraphRetainUserObject_v11030)(mcDrvGraph graph, mcDrvUserObject object, unsigned int count, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuGraphReleaseUserObject_v11030)(mcDrvGraph graph, mcDrvUserObject object, unsigned int count);

/*
 * Type definitions for older versioned functions
 */
typedef mcDrvError_t (*PFN_wcuMemHostRegister_v4000)(void *p, size_t bytesize, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuGraphicsResourceSetMapFlags_v3000)(mcDrvGraphicsResource resource, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuLinkCreate_v5050)(unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues, mcDrvlinkState_t *stateOut);
typedef mcDrvError_t (*PFN_wcuLinkAddData_v5050)(mcDrvlinkState_t state, mcDrvJitInputType_t type, void *data, size_t size, const char *name, unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues);
typedef mcDrvError_t (*PFN_wcuLinkAddFile_v5050)(mcDrvlinkState_t state, mcDrvJitInputType_t type, const char *path, unsigned int numOptions, mcDrvjit_option_t *options, void **optionValues);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddress2D_v3020)(mcDrvTexref hTexRef, const mcDrvArrayDescriptor *desc, mcDrvDeviceptr_t dptr, size_t Pitch);
typedef mcDrvError_t (*PFN_wcuDeviceTotalMem_v2000)(unsigned int *bytes, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuCtxCreate_v2000)(mcDrvContext_t *pctx, unsigned int flags, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuModuleGetGlobal_v2000)(mcDrvDeviceptrv1_t *dptr, unsigned int *bytes, mcDrvModule_t hmod, const char *name);
typedef mcDrvError_t (*PFN_wcuMemGetInfo_v2000)(unsigned int *free, unsigned int *total);
typedef mcDrvError_t (*PFN_wcuMemAlloc_v2000)(mcDrvDeviceptrv1_t *dptr, unsigned int bytesize);
typedef mcDrvError_t (*PFN_wcuMemAllocPitch_v2000)(mcDrvDeviceptrv1_t *dptr, unsigned int *pPitch, unsigned int WidthInBytes, unsigned int Height, unsigned int ElementSizeBytes);
typedef mcDrvError_t (*PFN_wcuMemFree_v2000)(mcDrvDeviceptrv1_t dptr);
typedef mcDrvError_t (*PFN_wcuMemGetAddressRange_v2000)(mcDrvDeviceptrv1_t *pbase, unsigned int *psize, mcDrvDeviceptrv1_t dptr);
typedef mcDrvError_t (*PFN_wcuMemAllocHost_v2000)(void **pp, unsigned int bytesize);
typedef mcDrvError_t (*PFN_wcuMemHostGetDevicePointer_v2020)(mcDrvDeviceptrv1_t *pdptr, void *p, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoD_v2000)(mcDrvDeviceptrv1_t dstDevice, const void *srcHost, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoH_v2000)(void *dstHost, mcDrvDeviceptrv1_t srcDevice, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoD_v2000)(mcDrvDeviceptrv1_t dstDevice, mcDrvDeviceptrv1_t srcDevice, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoA_v2000)(MCarray dstArray, unsigned int dstOffset, mcDrvDeviceptrv1_t srcDevice, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoD_v2000)(mcDrvDeviceptrv1_t dstDevice, MCarray srcArray, unsigned int srcOffset, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoA_v2000)(MCarray dstArray, unsigned int dstOffset, const void *srcHost, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoH_v2000)(void *dstHost, MCarray srcArray, unsigned int srcOffset, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoA_v2000)(MCarray dstArray, unsigned int dstOffset, MCarray srcArray, unsigned int srcOffset, unsigned int ByteCount);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoAAsync_v2000)(MCarray dstArray, unsigned int dstOffset, const void *srcHost, unsigned int ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyAtoHAsync_v2000)(void *dstHost, MCarray srcArray, unsigned int srcOffset, unsigned int ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy2D_v2000)(const mcDrvMemcpy2Dv1 *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy2DUnaligned_v2000)(const mcDrvMemcpy2Dv1 *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpy3D_v2000)(const mcDrvMemcpy3Dv1 *pCopy);
typedef mcDrvError_t (*PFN_wcuMemcpyHtoDAsync_v2000)(mcDrvDeviceptrv1_t dstDevice, const void *srcHost, unsigned int ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoHAsync_v2000)(void *dstHost, mcDrvDeviceptrv1_t srcDevice, unsigned int ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpyDtoDAsync_v3000)(mcDrvDeviceptrv1_t dstDevice, mcDrvDeviceptrv1_t srcDevice, unsigned int ByteCount, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy2DAsync_v2000)(const mcDrvMemcpy2Dv1 *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemcpy3DAsync_v2000)(const mcDrvMemcpy3Dv1 *pCopy, mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuMemsetD8_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned char uc, unsigned int N);
typedef mcDrvError_t (*PFN_wcuMemsetD16_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned short us, unsigned int N);
typedef mcDrvError_t (*PFN_wcuMemsetD32_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned int ui, unsigned int N);
typedef mcDrvError_t (*PFN_wcuMemsetD2D8_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned int dstPitch, unsigned char uc, unsigned int Width, unsigned int Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D16_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned int dstPitch, unsigned short us, unsigned int Width, unsigned int Height);
typedef mcDrvError_t (*PFN_wcuMemsetD2D32_v2000)(mcDrvDeviceptrv1_t dstDevice, unsigned int dstPitch, unsigned int ui, unsigned int Width, unsigned int Height);
typedef mcDrvError_t (*PFN_wcuArrayCreate_v2000)(MCarray *pHandle, const mcDrvArrayDescriptorv1 *pAllocateArray);
typedef mcDrvError_t (*PFN_wcuArrayGetDescriptor_v2000)(mcDrvArrayDescriptorv1 *pArrayDescriptor, MCarray hArray);
typedef mcDrvError_t (*PFN_wcuArray3DCreate_v2000)(MCarray *pHandle, const mcDrvArray3DDescriptorv1 *pAllocateArray);
typedef mcDrvError_t (*PFN_wcuArray3DGetDescriptor_v2000)(mcDrvArray3DDescriptorv1 *pArrayDescriptor, MCarray hArray);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddress_v2000)(unsigned int *ByteOffset, mcDrvTexref hTexRef, mcDrvDeviceptrv1_t dptr, unsigned int bytes);
typedef mcDrvError_t (*PFN_wcuTexRefSetAddress2D_v2020)(mcDrvTexref hTexRef, const mcDrvArrayDescriptorv1 *desc, mcDrvDeviceptrv1_t dptr, unsigned int Pitch);
typedef mcDrvError_t (*PFN_wcuTexRefGetAddress_v2000)(mcDrvDeviceptrv1_t *pdptr, mcDrvTexref hTexRef);
typedef mcDrvError_t (*PFN_wcuGraphicsResourceGetMappedPointer_v3000)(mcDrvDeviceptrv1_t *pDevPtr, unsigned int *pSize, mcDrvGraphicsResource resource);
typedef mcDrvError_t (*PFN_wcuCtxDestroy_v2000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuCtxPopCurrent_v2000)(mcDrvContext_t *pctx);
typedef mcDrvError_t (*PFN_wcuCtxPushCurrent_v2000)(mcDrvContext_t ctx);
typedef mcDrvError_t (*PFN_wcuStreamDestroy_v2000)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuEventDestroy_v2000)(mcDrvEvent_t hEvent);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxRelease_v7000)(mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxReset_v7000)(mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuDevicePrimaryCtxSetFlags_v7000)(mcDrvDevice_t dev, unsigned int flags);
typedef mcDrvError_t (*PFN_wcuStreamBeginCapture_v10000)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuStreamBeginCapture_v10000_ptsz)(mcDrvStream_t hStream);
typedef mcDrvError_t (*PFN_wcuIpcOpenMemHandle_v4010)(mcDrvDeviceptr_t *pdptr, mcIpcMemHandle_t handle, unsigned int Flags);
typedef mcDrvError_t (*PFN_wcuGraphInstantiate_v10000)(mcDrvGraphExec *phGraphExec, mcDrvGraph hGraph, mcDrvGraphNode *phErrorNode, char *logBuffer, size_t bufferSize);
typedef mcDrvError_t (*PFN_wcuMulticastCreate_v12010)(mcDrvMemGenericAllocationHandle_t *mcHandle, const mcDrvMulticastObjectProp *prop);
typedef mcDrvError_t (*PFN_wcuMulticastAddDevice_v12010)(mcDrvMemGenericAllocationHandle_t mcHandle, mcDrvDevice_t dev);
typedef mcDrvError_t (*PFN_wcuMulticastBindMem_v12010)(mcDrvMemGenericAllocationHandle_t mcHandle, size_t mcOffset, mcDrvMemGenericAllocationHandle_t memHandle, size_t memOffset, size_t size, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMulticastBindAddr_v12010)(mcDrvMemGenericAllocationHandle_t mcHandle, size_t mcOffset, mcDrvDeviceptr_t memptr, size_t size, unsigned long long flags);
typedef mcDrvError_t (*PFN_wcuMulticastUnbind_v12010)(mcDrvMemGenericAllocationHandle_t mcHandle, mcDrvDevice_t dev, size_t mcOffset, size_t size);
typedef mcDrvError_t (*PFN_wcuMulticastGetGranularity_v12010)(size_t *granularity, const mcDrvMulticastObjectProp *prop, mcDrvMulticastGranularity_flags option);

#endif